// 表单检验类 
export default class Validator {

    static strategies = {
        isNotEmpty(value, msg) {
            if (value === '') return msg
        },
        minAge(value, min, msg) {
            if (+value < +min) return msg
        },
        minLength(value, min, msg) {
            if (value.length < +min) return msg
        }
    }

    constructor() {
        this.cache = []
    }

    // 添加校验方法
    add(value, rule, msg) {
        let temp = rule.split(":")// 分割权限规则与值
        this.cache.push(() => {
            let strategy = temp.shift()// 把策略方法拿出来 
            temp.unshift(value)// val 值往头插
            temp.push(msg) // 提示信息插入尾
            return Validator.strategies[strategy](...temp) // 返回校验后的结果
        })
    }

    // 验证方法
    validator() {
        let res = this.cache.map(fn => fn()).join("");
        this.cache.length = 0// 清空 cache
        return res === '' ? 'success' : res
    }
}

